/**
*	@class GeometryChunk
*
*	@brief
*
*	@author William McVicar
*/

#pragma once

#ifndef __MESH_BASE_H_INCLUDED__
#define __MESH_BASE_H_INCLUDED__

//  Library Includes

//  Local Includes

//  Macros

//  Forward Declarations

namespace Protein
{
	class VertexBuffer;
	class IndexBuffer;
	class VertexFormatBase;
}

//  Types

//  Constants

//  Prototypes

namespace Protein
{

class GeometryChunk
{
	//Member Functions
public:

	GeometryChunk();
	virtual ~GeometryChunk();

	virtual bool Load( const char* _szFilename );
	virtual bool Load3DS( const char* _szFilename );
	virtual bool LoadFBX( const char* _szFilename );

	VertexBuffer*		vertexBuffer();
	IndexBuffer*		indexBuffer();

	unsigned int GetNumIndices() { return m_uiNumIndices; }

protected: 

private: 

	//Member Variables
public:

protected: 

	VertexBuffer*				    m_pVertexBuffer;
	IndexBuffer*				    m_pIndexBuffer;
	VertexFormatBase*			  m_pVertexFormatBase;

	unsigned int						m_uiNumIndices;

	static const char*			sm_szMeshFileExtension;

private: 

};

}

#endif //__MESH_BASE_H_INCLUDED__
